package com.example.aidocengine.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.aidocengine.pojo.entity.DeviceTemplateImport;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

@Mapper
public interface DeviceTemplateImportMapper extends BaseMapper<DeviceTemplateImport> {
    
    /**
     * 根据导入状态查询记录
     */
    List<DeviceTemplateImport> selectByImportStatus(@Param("importStatus") String importStatus);
    
    /**
     * 查询指定时间范围内的导入记录
     */
    List<DeviceTemplateImport> selectByTimeRange(@Param("startTime") LocalDateTime startTime, 
                                               @Param("endTime") LocalDateTime endTime,
                                               @Param("limit") Integer limit);
    
    /**
     * 查询最近的导入记录
     */
    List<DeviceTemplateImport> selectLatestImports(@Param("limit") Integer limit);
    
    /**
     * 查询成功的导入记录数量
     */
    int selectSuccessCount(@Param("startTime") LocalDateTime startTime, 
                         @Param("endTime") LocalDateTime endTime);
    
    /**
     * 查询失败的导入记录数量
     */
    int selectFailedCount(@Param("startTime") LocalDateTime startTime, 
                        @Param("endTime") LocalDateTime endTime);
    
    /**
     * 查询导入记录统计信息
     */
    List<Map<String, Object>> selectImportStatistics(@Param("startTime") LocalDateTime startTime, 
                                                    @Param("endTime") LocalDateTime endTime);
    
    /**
     * 更新导入状态和记录数量
     */
    int updateImportStatus(@Param("importId") Long importId,
                          @Param("importStatus") String importStatus,
                          @Param("totalRecords") Integer totalRecords,
                          @Param("successRecords") Integer successRecords,
                          @Param("failedRecords") Integer failedRecords,
                          @Param("errorMessage") String errorMessage);
    
    /**
     * 批量删除指定天数前的导入记录
     */
    int deleteOldImports(@Param("days") int days);
}